home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / basic / pbtool.exe / LABELS.BAS < prev    next >
BASIC Source File  |  1991-08-21  |  7KB  |  184 lines

  1. '----------------------------------------------------------
  2. '  PROGRAM: LABELS.BAS         PROGRAMMER: A. KELLETT
  3. '  DATE-WRITTEN: 08/20/91
  4. '  USING POWER BASIC V2.10A
  5. '
  6. '  THIS PROGRAM ALLOWS PRINTING LABELS ON 15/16" HIGH BY
  7. '  3.5" WIDE LABELS...
  8. '  VERSION: 1.00  Copyright (c) 1991 LAST UPDATED: 08/21/91
  9. '----------------------------------------------------------
  10. VERSION$ = "1.00":LMARGIN = 5
  11. $INCLUDE "CHARS.INC"
  12. $INCLUDE "GETCHAR.INC"
  13.  
  14. '**** MAIN CODE LOOP FOLLOWING ****
  15. WHILE KEYIN$ <> "0"
  16.    CLS
  17.    LOCATE 01,20:PRINT "LABEL PRINTING PROGRAM V";VERSION$;" BY A KELLETT."
  18.    LOCATE 02,8:PRINT "╓────────────────────────────────────────────────────────────╖"
  19.    LOCATE 03,8:PRINT "║   THIS PROGRAM IS DESIGNED TO WORK WITH LABELS WHICH ARE   ║"
  20.    LOCATE 04,8:PRINT "║   15/16 INCHES HIGH BY 3.5 INCHES WIDE.  IT ALLOWS UP TO   ║"
  21.    LOCATE 05,8:PRINT "║   FOUR LINES ON EACH LABEL.                                ║"
  22.    LOCATE 06,8:PRINT "╙───────────╥──────────────────────────────────────╥─────────╜"
  23.    LOCATE 07,8:PRINT "            ║                                      ║
  24.    LOCATE 08,8:PRINT "            ║   0   QUIT  (EXIT TO DOS)            ║
  25.    LOCATE 09,8:PRINT "            ║   1   SET LEFT MARGIN FOR PRINTING   ║
  26.    LOCATE 10,8:PRINT "            ║   2   ENTER LABEL CONTENTS           ║
  27.    LOCATE 11,8:PRINT "            ║   3   PRINT ALIGNMENT TEST           ║
  28.    LOCATE 12,8:PRINT "            ║   4   PRINT THE LABELS               ║
  29.    LOCATE 13,8:PRINT "            ║                                      ║
  30.    LOCATE 14,8:PRINT "            ║      PLEASE CHOOSE [0 - 4]           ║
  31.    LOCATE 15,8:PRINT "            ║                                      ║
  32.    LOCATE 16,8:PRINT "            ╙──────────────────────────────────────╜
  33.  
  34.    DO
  35.       KEYIN$ = UCASE$(INKEY$)
  36.    LOOP UNTIL INSTR(" 01234", KEYIN$) > 1
  37.  
  38.    SELECT CASE KEYIN$
  39.       CASE "0":CLS
  40.                LOCATE 24,1:PRINT "VERSION ";VERSION$;" BY A KELLETT"
  41.       CASE "1":GOSUB LEFTMARGIN
  42.       CASE "2":GOSUB LABELCONTENTS
  43.       CASE "3":GOSUB ALIGNMENT
  44.       CASE "4":GOSUB PRINTLABELS
  45.    END SELECT
  46. WEND
  47. END
  48. '**** END OF MAIN CODE LOOP ***
  49.  
  50. '
  51. '  THIS MODULE ALLOWS CHANGING THE LEFT MARGIN FROM THE DEFAULT
  52. '--------------------------------------------------------------------
  53. LEFTMARGIN:
  54.    CLS:LOCATE 1,20:PRINT "SET THE LEFT MARGIN FOR PRINTING LABELS."
  55.    LOCATE 2,5:PRINT USING "THE CURRENT MARGIN IS ##";LMARGIN
  56.    LOCATE 3,5:PRINT "ENTER THE NEW MARGIN [0 - 30]:";CHR$(16)
  57.       LOCATE 3,38:PRINT CHR$(17)
  58.    CALL GETCHAR(3,35,2,NUMBER$):LMARGIN = VAL(INSTRING$):INSTRING$ = ""
  59.  
  60.    IF LMARGIN < 0 OR LMARGIN > 30 THEN
  61.       LOCATE 5,5:PRINT "THAT IS AN INVALID MARGIN.  WILL USE DEFAULT OF 5."
  62.       LMARGIN = 5
  63.       DELAY 4
  64.    END IF
  65.    DELAY 1.5
  66.  
  67. RETURN
  68. '
  69. '  THIS MODULE ALLOWS ENTERING THE LABEL CONTENTS - FOUR LINES MAX
  70. '--------------------------------------------------------------------
  71. LABELCONTENTS:
  72.    CLS:LOCATE 1,15:PRINT "ENTER NAME/ADDRESS FOR YOUR LABELS."
  73.    LOCATE 2,5:PRINT "SIMPLY PRESS Enter FOR ANY LINES THAT NEED TO BE BLANK."
  74.    LOCATE 5,13:PRINT CHR$(16):LOCATE 5,44:PRINT CHR$(17)
  75.    LOCATE 5,5:PRINT "LINE 1:":CALL GETCHAR(5,13,30,NORMAL$)
  76.       LINE1$ = INSTRING$:INSTRING$ = ""
  77.    LOCATE 6,13:PRINT CHR$(16):LOCATE 6,44:PRINT CHR$(17)
  78.    LOCATE 6,5:PRINT "LINE 2:":CALL GETCHAR(6,13,30,NORMAL$)
  79.       LINE2$ = INSTRING$:INSTRING$ = ""
  80.    LOCATE 7,13:PRINT CHR$(16):LOCATE 7,44:PRINT CHR$(17)
  81.    LOCATE 7,5:PRINT "LINE 3:":CALL GETCHAR(7,13,30,NORMAL$)
  82.       LINE3$ = INSTRING$:INSTRING$ = ""
  83.    LOCATE 8,13:PRINT CHR$(16):LOCATE 8,44:PRINT CHR$(17)
  84.    LOCATE 8,5:PRINT "LINE 4:":CALL GETCHAR(8,13,30,NORMAL$)
  85.       LINE4$ = INSTRING$:INSTRING$ = ""
  86.  
  87.    LOCATE 12,5:PRINT "LABEL CONTENTS HAVE BEEN CHANGED.  PRESS ANY KEY TO CONTINUE."
  88.    WHILE NOT INSTAT
  89.       '*** LOOP UNTIL A KEY IS PRESSED ***
  90.    WEND
  91.  
  92. RETURN
  93. '
  94. '  THIS MODULE ALLOWS PRINTING TEST LABELS FOR ALIGNMENT PURPOSES
  95. '--------------------------------------------------------------------
  96. ALIGNMENT:
  97.    EXITFLAG$ = ""
  98.    WHILE EXITFLAG$ = ""
  99.       CLS:LOCATE 1,25:PRINT "PRINT TEST LABELS FOR ALIGNMENT."
  100.       LOCATE 2,8:PRINT "LABELS WILL BE PRINTED WITH IN GROUPS OF TWO.  PLEASE"
  101.       LOCATE 3,8:PRINT "ALIGN THE LABELS BEFORE PRESSING ANY KEY TO BEGIN..."
  102.       WHILE NOT INSTAT
  103.          '*** LOOP UNTIL A KEY IS PRESSED ***
  104.       WEND
  105.       FOR I% = 1 TO 2
  106.          LPRINT TAB(LMARGIN);"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  107.          LPRINT TAB(LMARGIN);"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  108.          LPRINT TAB(LMARGIN);"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  109.          LPRINT TAB(LMARGIN);"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  110.          LPRINT:LPRINT:  '*** SPACE UP BETWEEN LABELS ***
  111.       NEXT I%
  112.       LOCATE 5,8:PRINT "DO YOU NEED TO PRINT MORE ALIGNMENT LABELS? [Y/N]"
  113.       DO
  114.          KEYIN$ = UCASE$(INKEY$)
  115.       LOOP UNTIL INSTR(" YN", KEYIN$) > 1
  116.       IF KEYIN$ = "N" THEN
  117.          EXITFLAG$ = "Y"
  118.       END IF
  119.    WEND
  120.  
  121. RETURN
  122. '
  123. '  THIS MODULE ACTUALLY PRINTS THE LABELS (IF CONTENTS HAVE BEEN ENTERED)
  124. '--------------------------------------------------------------------
  125. PRINTLABELS:
  126.    EXITFLAG$ = ""
  127.    IF (LINE1$ = "" AND LINE2$ = "" AND LINE3$ = "" AND LINE4$ = "") THEN
  128.       CLS:LOCATE 1,25:PRINT "PRINT THE LABELS."
  129.       LOCATE 2,8:PRINT "THE CONTENTS OF THE LABELS HAVE NOT BEEN ENTERED.  YOU"
  130.       LOCATE 3,8:PRINT "SHOULD CHOOSE   ENTER LABEL CONTENTS   FROM THE MAIN"
  131.       LOCATE 4,8:PRINT "MENU AND ENTER THE CONTENTS BEFORE YOU CAN PRINT LABELS."
  132.       LOCATE 6,20:PRINT "PRESS ANY KEY TO CONTINUE"
  133.       WHILE NOT INSTAT
  134.          '*** LOOP UNTIL A KEY IS PRESSED ***
  135.       WEND
  136.       RETURN
  137.    END IF
  138.    WHILE EXITFLAG$ = ""
  139.       CLS:LOCATE 1,25:PRINT "PRINT THE LABELS."
  140.       LOCATE 16,15:PRINT "THE CURRENT LABEL IS: "
  141.       LOCATE 18,8:PRINT LINE1$
  142.       LOCATE 19,8:PRINT LINE2$
  143.       LOCATE 20,8:PRINT LINE3$
  144.       LOCATE 21,8:PRINT LINE4$
  145.  
  146.       LOCATE 3,8:
  147.          PRINT "ENTER NUMBER OF LABELS TO PRINT [1-999], 0 TO QUIT:";CHR$(16)
  148.          LOCATE 3,63:PRINT CHR$(17)
  149.       CALL GETCHAR(3,59,3,NUMBER$):NUMLABELS = VAL(INSTRING$):INSTRING$ = ""
  150.       IF NUMLABELS = 0 THEN
  151.          EXITFLAG$ = " "
  152.          DELAY 1.5
  153.          RETURN
  154.       END IF
  155.       IF (NUMLABELS > 999) OR (NUMLABELS < 0) THEN
  156.          LOCATE 4,8:PRINT "INVALID NUMBER OF LABELS, MUST BE FROM 1 TO 999"
  157.          DELAY 4
  158.          RETURN
  159.       END IF
  160.       LOCATE 4,8
  161.        PRINT "PLEASE ALIGN THE LABELS BEFORE PRESSING ANY KEY TO BEGIN..."
  162.       WHILE NOT INSTAT
  163.          '*** LOOP UNTIL A KEY IS PRESSED ***
  164.       WEND
  165.       FOR I% = 1 TO NUMLABELS
  166.          LPRINT TAB(LMARGIN);LINE1$
  167.          LPRINT TAB(LMARGIN);LINE2$
  168.          LPRINT TAB(LMARGIN);LINE3$
  169.          LPRINT TAB(LMARGIN);LINE4$
  170.          LPRINT:LPRINT:  '*** SPACE UP BETWEEN LABELS ***
  171.       NEXT I%
  172.       LOCATE 6,8:PRINT "DO YOU NEED TO PRINT MORE LABELS? [Y/N]"
  173.       DO
  174.          KEYIN$ = UCASE$(INKEY$)
  175.       LOOP UNTIL INSTR(" YN", KEYIN$) > 1
  176.       IF KEYIN$ = "N" THEN
  177.          EXITFLAG$ = "Y"
  178.       END IF
  179.    WEND
  180.  
  181. RETURN
  182.  
  183.  
  184.